﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;

namespace BatailleNavale
{
    class ZoneAdver
    {
        private List<Bateau> BateauxRobot;

        public ZoneAdver()
        {
            BateauxRobot = new List<Bateau>();
            GénérerLesBateaux();
        }
        private void GénérerLesBateaux()
        {
            GénérerBateau(5);
            GénérerBateau(4);
            GénérerBateau(4);
            GénérerBateau(3);
            GénérerBateau(3);
            GénérerBateau(2);
            GénérerBateau(2);
        }//génère les 7 bateaux.

        private void GénérerBateau(int taille)
        {
            bool bateauCréer = false;
            bool testCollision = false;
            Random nbsAléa = new Random();
            int verifCo = 0;
            while (bateauCréer == false && testCollision == false)
            {
                int coordX = nbsAléa.Next(1, 11);
                int coordY = nbsAléa.Next(11, 20);
                int sens = nbsAléa.Next(1, 4);
                char sensBateau;
                switch (sens)
                {
                    case 1:
                        sensBateau = 'g';
                        break;
                    case 2:
                        sensBateau = 'd';
                        break;
                    case 3:
                        sensBateau = 'h';
                        break;
                    case 4:
                        sensBateau = 'b';
                        break;
                    default:
                        sensBateau = 'n';
                        break;
                }
                switch (sensBateau)
                {

                    case 'g':
                        {
                            verifCo = coordX - taille;
                            break;
                        }
                    case 'd':
                        {
                            verifCo = coordY + taille;
                            break;
                        }
                    case 'h':
                        {
                            verifCo = coordY - 10 + taille;
                            break;
                        }
                    case 'b':
                        {
                            verifCo = coordY + 10 - taille;
                            break;
                        }
                    default:
                        break;
                }

                if (verifCo <= 11 && verifCo >= 0)
                {
                    testCollision = true;
                }
                else
                {

                    testCollision = false;
                }

                Bateau batTest = new Bateau(taille, sensBateau, coordY, coordX); //Création d'un bateau pour le test des collisions, ne sera pas conserver dans le cas d'un echec de collision.
                if (testCollision)
                {
                    foreach (Bateau bTest in BateauxRobot)
                    {
                        foreach (string cases in bTest.getCases())
                        {
                            foreach (string caseB in batTest.getCases())
                            {
                                if (caseB == cases)
                                {
                                    testCollision = false;
                                }
                            }
                        }
                    }
                }
                if (testCollision == true)
                {
                    BateauxRobot.Add(batTest);
                    bateauCréer = true;
                }
            }
        } //génère 1 bateau sans collisions

        public List<Bateau> getBateaux()
        {
            return BateauxRobot;
        }  //retourne les bateaux de l'adversaire
    }
             
}
